package com.xf.system.common.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xf.system.common.model.Role;
import com.xf.system.http.req.role.RoleListReqDTO;
import com.xf.system.http.vo.role.RoleDetailVO;
import com.xf.system.http.vo.user.UserRoleDetailVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author xiefengf
 */
@Repository
public interface RoleMapper extends BaseMapper<Role> {

    /**
     * 查询当前用户对应的角色信息
     * @param id 用户主键id
     * @return 角色列表
     */
    List<UserRoleDetailVO> selectRoleByUid(@Param("id") Long id);

    /**
     * 通过角色id查询角色详情信息
     * @param id 角色主键id
     * @return 角色详情信息
     */
    RoleDetailVO selectRoleByRid(@Param("id") Long id);

    /**
     * 根据条件分页查询角色列表
     * @param page 分页条件
     * @param reqDto 查询条件
     * @return 角色分页集合信息
     */
    IPage<RoleDetailVO> selectRoleList(Page<RoleDetailVO> page, @Param("reqDto") RoleListReqDTO reqDto);

    /**
     * 根据角色名查询用户信息
     * @param roleName 用户登录名
     * @return 角色详情信息
     */
    Role selectRoleByRoleName(@Param("roleName")String roleName);

    /**
     * 根据角色权限字符串查询用户信息
     * @param roleKey 用户登录名
     * @return 角色详情信息
     */
    Role selectRoleByRoleKey(@Param("roleKey")String roleKey);

}
